#ifndef JSON_PROTOCOL_H
#define JSON_PROTOCOL_H

#include <stdint.h>
#include <time.h>

// 简化命令类型定义
typedef enum {
    CMD_UNKNOWN = 0,
    CMD_SET_TIME,
    CMD_FAN_CONTROL,
    CMD_LED_CONTROL,
    CMD_SENSOR_DATA
} CommandType;

// 简化风扇控制结构体
typedef struct {
    uint8_t power;
    int8_t speed;  // -100 到 +100
} FanControl;

// 简化LED控制结构体
typedef struct {
    uint8_t power;
    uint8_t brightness;  // 0 到 100
} LedControl;

// 简化温湿度结构体
typedef struct {
    float humidity;
    float temperature;
    time_t timestamp;
} DHT11Data;

// 错误代码定义
#define JSON_SUCCESS 0
#define JSON_PARSE_ERROR -1
#define JSON_MISSING_KEY -2
#define JSON_TYPE_ERROR -3

// 简化函数声明
int parse_command(const char* json_str, CommandType* cmd_type);
int parse_fan_command(const char* json_str, FanControl* fan);
int parse_led_command(const char* json_str, LedControl* led);
int parse_time_command(const char* json_str, time_t* timestamp);

char* create_light_data(uint8_t light_value);
char* create_dht11_data(float humidity, float temperature);
char* create_command_response(const char* status, const char* message);

void free_json_string(char** json_str_ptr);

#endif